#include <iostream>
#include <string>

using namespace std;

class Complex
{
private:
	double real; // 实部
	double imag; // 虚部

public:
	// 构造
	Complex()
		: real(0), imag(0)
	{
	}
	Complex(double real, double imag)
		: real(real), imag(imag)
	{
	}
	// 析构
	~Complex() {}

public:
	// 显示
	void Show()
	{
		cout << "实部" << real << "虚部" << imag << endl;
	}

public:
	// 自己编写()运算符的重载
	void operator()()
	{
		cout << "实部" << real << "虚部" << imag << endl;
	}

	void operator()(Complex &O)
	{
		// 本类===this===的实部虚部
		cout << "实部" << real << "虚部" << imag << endl;
		// 传进来另一个类的实部虚部
		cout << "实部" << O.real << "虚部" << O.imag << endl;
	}

	void operator()(const char *str)
	{
		cout << str << " 的 实部" << real << " 虚部" << imag << endl;
	}
};

int main(int argc, char const *argv[])
{
	Complex F1(10, 20);
	Complex F2(80, 90);
	F1(F2);
	F1("some string");

	return 0;
}
